package lk.icta.core.service;

import lk.icta.core.dto.LandAssociationDetails;
import lk.icta.core.entity.Kachchery;
import lk.icta.core.entity.Schedule;
import lk.icta.user.entity.User;

import java.util.Date;
import java.util.List;

/**
 * @author Kusal Samarakoon
 */
public interface KachcheryManagementService {

    /**
     * Adding a Kachchery
     *
     * @param kachchery The kachchery to be added
     * @param user      The user requesting to add the kachchery
     */
    public void addKachchery(Kachchery kachchery, User user);

    /**
     * Updating a Kachchery
     *
     * @param kachchery The kachchery to be updated
     * @param user      The user requesting to update the kachchery
     */
    public void updateKachchery(Kachchery kachchery, User user);

    /**
     * Return all Kachchery in the system by state
     *
     * @return Kachchery
     */
    public List<Kachchery> getAllKachcheryByState(Kachchery.Status status);

    /**
     * Return all Kachchery of the given D.S. Division and state.
     *
     * @param status
     * @param user
     * @return List of Kachchery in the given D.S. Division.
     */
    public List<Kachchery> getAllKachcheryByDSDivisionAndState(Kachchery.Status status, User user);


    /**
     * @param id id of the Kachchery
     * @return Kachchery corresponding to the id
     */
    public Kachchery getKachcheryById(long id);

    public List<LandAssociationDetails> getLandListByKachcheryId(long id);

    public void updateAttachDocKachchery(Kachchery kachchery, User user);
}
